Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with other software applications or other computer systems. For example, a client computer system may be configured to request a service from a service provider. The service provider may receive requests from various clients and, in response to the requests, provide the service. Providing the service may include transmitting various communications between the provider and client computer systems. Oftentimes, these computer systems are on different computer networks, separated or blocked off by various hardware or software devices such as routers and firewalls.
In some cases, virtual private networks (VPNs), relays or other secure communication channels may be established between computer systems that are on separate networks. Relays, however, are typically either private to an organization or are public, allowing access any user, including potentially harmful users.